home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 August: Tool Chest / Dev.CD Aug 94.toast / New System Software Extensions / OpenDoc A6 / OpenDoc Parts Framework / OPF / OS / FWGraphx / Sources / FWShape.cpp < prev    next >
Encoding:
Text File  |  1994-04-21  |  7.3 KB  |  241 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWShape.cpp
  4. //    Release Version:    $ 1.0d1 $
  5. //
  6. //    Creation Date:        3/28/94
  7. //
  8. //    Copyright:    © 1993, 1994 by Apple Computer, Inc., all rights reserved.
  9. //
  10. //========================================================================================
  11.  
  12. #ifndef FWSHAPE_H
  13. #include "FWShape.h"
  14. #endif
  15.  
  16. // ----- Macintosh Includes -----
  17.  
  18. #if defined(FW_BUILD_MAC) && !defined(mathRoutinesIncludes)
  19. #include <math routines.h>
  20. #endif
  21.  
  22. //==============================================================================
  23. //    •• RunTime Info
  24. //==============================================================================
  25.  
  26. #ifdef FW_BUILD_MAC
  27. #pragma segment fwgraphx
  28. #endif
  29.  
  30. //==============================================================================
  31. //    •• class FW_CShape
  32. //==============================================================================
  33.  
  34. //------------------------------------------------------------------------------
  35. // FW_CShape::FW_CShape
  36. //------------------------------------------------------------------------------
  37.  
  38. FW_CShape::FW_CShape() :
  39.     FW_CGraphicObjectPtr()
  40. {
  41. }
  42.  
  43. //------------------------------------------------------------------------------
  44. // FW_CShape::FW_CShape
  45. //------------------------------------------------------------------------------
  46.  
  47. FW_CShape::FW_CShape(const FW_CShape& other) :
  48.     FW_CGraphicObjectPtr(other)
  49. {
  50. }
  51.  
  52. //------------------------------------------------------------------------------
  53. // FW_CShape::FW_CShape
  54. //------------------------------------------------------------------------------
  55.  
  56. FW_CShape::FW_CShape(FW_CShapeRep* other) :
  57.     FW_CGraphicObjectPtr(other)
  58. {
  59. }
  60.  
  61. //------------------------------------------------------------------------------
  62. // FW_CShape::operator=
  63. //------------------------------------------------------------------------------
  64.  
  65. FW_CShape& FW_CShape::operator=(const FW_CShape& other)
  66. {
  67.     SetRep(other.GetRep());
  68.     return *this;
  69. }
  70.  
  71. //------------------------------------------------------------------------------
  72. // FW_CShape::operator=
  73. //------------------------------------------------------------------------------
  74.  
  75. FW_CShape& FW_CShape::operator=(FW_CShapeRep* other)
  76. {
  77.     SetRep(other);
  78.     return *this;
  79. }
  80.  
  81. //==============================================================================
  82. //    •• class FW_CShapeRep
  83. //==============================================================================
  84.  
  85. //------------------------------------------------------------------------------
  86. //    • FW_CShapeRep::FW_CShapeRep
  87. //------------------------------------------------------------------------------
  88.  
  89. FW_CShapeRep::FW_CShapeRep()
  90. {
  91.     fShapeFill = FW_kNullShape;
  92. }
  93.  
  94. //------------------------------------------------------------------------------
  95. //    • FW_CShapeRep::FW_CShapeRep
  96. //------------------------------------------------------------------------------
  97.  
  98. FW_CShapeRep::FW_CShapeRep(const FW_SDefaultProperties& defaultProperties) :
  99.     fShapeInk(defaultProperties.fInk),
  100.     fShapeStyle(defaultProperties.fStyle),
  101.     fShapeFill(defaultProperties.fFill),
  102.     fHitTestPart(FW_kInBounds),
  103.     fTolerance(ff(0))
  104. {    
  105. }
  106.  
  107. //------------------------------------------------------------------------------
  108. //    • FW_CShapeRep::FW_CShapeRep
  109. //------------------------------------------------------------------------------
  110.  
  111. FW_CShapeRep::FW_CShapeRep(const FW_CShapeRep& shapeRep):
  112.     fShapeInk(shapeRep.GetShapeInk()),
  113.     fShapeStyle(shapeRep.GetShapeStyle()),
  114.     fShapeFill(shapeRep.GetShapeFill()),
  115.     fHitTestPart(shapeRep.GetHitTestPart()),
  116.     fTolerance(shapeRep.GetHitTestTolerance())
  117. {
  118. }
  119.  
  120. //------------------------------------------------------------------------------
  121. //    • FW_CShapeRep::~FW_CShapeRep
  122. //------------------------------------------------------------------------------
  123.  
  124. FW_CShapeRep::~FW_CShapeRep()
  125. {
  126. }
  127.  
  128. //------------------------------------------------------------------------------
  129. //    • FW_CShapeRep::SetPenSize
  130. //------------------------------------------------------------------------------
  131.  
  132. void FW_CShapeRep::SetPenSize(XMPCoordinate penSize)
  133. {
  134.     NewStyleIfShared();
  135.     fShapeStyle->SetPenSize(penSize);
  136. }
  137.  
  138. //------------------------------------------------------------------------------
  139. //    • FW_CShapeRep::SetPattern
  140. //------------------------------------------------------------------------------
  141.  
  142. void FW_CShapeRep::SetPattern(const FW_CPattern& pattern)
  143. {
  144.     NewStyleIfShared();
  145.     fShapeStyle->SetPattern(pattern);
  146. }
  147.  
  148. //------------------------------------------------------------------------------
  149. //    • FW_CShapeRep::SetFontSize
  150. //------------------------------------------------------------------------------
  151.  
  152. void FW_CShapeRep::SetFontSize(XMPCoordinate fontSize)
  153. {
  154.     NewStyleIfShared();
  155.     fShapeStyle->SetFontSize(fontSize);
  156. }
  157.  
  158. //------------------------------------------------------------------------------
  159. //    • FW_CShapeRep::SetFontStyle
  160. //------------------------------------------------------------------------------
  161.  
  162. void FW_CShapeRep::SetFontStyle(FW_FontStyle fontStyle)
  163. {
  164.     NewStyleIfShared();
  165.     fShapeStyle->SetFontStyle(fontStyle);
  166. }
  167.  
  168. //------------------------------------------------------------------------------
  169. //    • FW_CShapeRep::SetFontName
  170. //------------------------------------------------------------------------------
  171.  
  172. void FW_CShapeRep::SetFontName(const FW_CDynamicString& fontName)
  173. {
  174.     NewStyleIfShared();
  175.     fShapeStyle->SetFontName(fontName);
  176. }
  177.  
  178. //------------------------------------------------------------------------------
  179. //    • FW_CShapeRep::SetForeColor
  180. //------------------------------------------------------------------------------
  181.  
  182. void FW_CShapeRep::SetForeColor(const FW_CColor& color)
  183. {
  184.     NewInkIfShared();
  185.     fShapeInk->SetForeColor(color);
  186. }
  187.  
  188. //------------------------------------------------------------------------------
  189. //    • FW_CShapeRep::SetBackColor
  190. //------------------------------------------------------------------------------
  191.  
  192. void FW_CShapeRep::SetBackColor(const FW_CColor& color)
  193. {
  194.     NewInkIfShared();
  195.     fShapeInk->SetBackColor(color);
  196. }
  197.  
  198. //------------------------------------------------------------------------------
  199. //    • FW_CShapeRep::SetTransferMode
  200. //------------------------------------------------------------------------------
  201.  
  202. void FW_CShapeRep::SetTransferMode(FW_TransferMode transferMode)
  203. {
  204.     NewInkIfShared();
  205.     fShapeInk->SetTransferMode(transferMode);
  206. }
  207.  
  208. //------------------------------------------------------------------------------
  209. //    • FW_CShapeRep::SetDefaultProperties
  210. //------------------------------------------------------------------------------
  211.  
  212. void FW_CShapeRep::SetDefaultProperties(FW_SDefaultProperties& defaultProperties) const
  213. {
  214.     defaultProperties.fFill = GetShapeFill();
  215.     defaultProperties.fInk = GetShapeInk();
  216.     defaultProperties.fStyle = GetShapeStyle();
  217. }
  218.  
  219. //------------------------------------------------------------------------------
  220. //    • FW_CShapeRep::NewStyleIfShared
  221. //------------------------------------------------------------------------------
  222.  
  223. void FW_CShapeRep::NewStyleIfShared()
  224. {
  225.     if (fShapeStyle->GetRefCount() > 1)
  226.         fShapeStyle = fShapeStyle->Copy();
  227. }
  228.  
  229. //------------------------------------------------------------------------------
  230. //    • FW_CShapeRep::NewInkIfShared
  231. //------------------------------------------------------------------------------
  232.  
  233. void FW_CShapeRep::NewInkIfShared()
  234. {
  235.     if (fShapeInk->GetRefCount() > 1)
  236.         fShapeInk = fShapeInk->Copy();
  237. }
  238.  
  239.  
  240.  
  241.